As technology becomes increasingly a part of current society, the electronic transfer of information and data is becoming more widespread. Electronic data transfer involves the electronic transmission and reception of data. Electronic data transfer may take many forms, such as the broadcasting of network television over the airwaves, cable television delivered by cable to paying subscribers, and the satellite transmission of consumer entertainment.
One of the most popular mediums for electronic data transfer is the World Wide Web (WWW) via the Internet. The Internet facilitates the connection of a multitude of computers to form the WWW, an enormous computer network. In general, a computer network is two or more computing devices that are connected by communication facilities. The network typically includes a server, which is a computing device that provides shared resources to clients on the network, and a client, which is a computing device that accesses the shared network resources provided by the server using the communication facilities. One or more clients may be request information from a server, which then transmits the information to the requesting clients.
A client typically connects to the network using a fixed bandwidth connection, such as a dial-up, a DSL, or a cable modem connection. On a fixed bandwidth connection, each application on the client must compete for the available bandwidth with other applications on the same machine or other machines on the same network. For example, if a user uses a client application to start downloading a large file (such as a video file or software patch) from a web site, and then wants to use a browser application on the client to surf the Internet, both the client application and the browser will be competing for the available bandwidth of the fixed connection.
In general, the user will experience a noticeable reduction in browser performance when using the browser while the large file is downloading. In fact, frequently the experience for the user is that it becomes excruciating slow to continue to do other things like navigate the WWW or check e-mail. These processes become slowed down tremendously by the large file that is being downloaded simultaneously because the download uses a large amount of bandwidth.
One cause of the large reduction in performance when a large file is downloading has to do with the type of protocols involved in transferring data. There are two common protocols that run over Internet Protocol (IP), namely TCP and UDP. In general, TCP is a responsive flow that has a feedback feature that detects congestion. Specifically, by noting that rate at which the client is receiving the data, the server knows the level of congestion in the connection. Using TCP a server begins sending data at a low rate continues increasing the rate so long as the client continues receiving the data. Once the client notifies the server that it is losing portions of the transmitted data, the server backs off the rate at which data is sent. On the other hand, UDP is a non-responsive flow that has essentially no feedback feature. A server using UDP simply sends the data out at a certain rate and has no way of knowing whether the client received the data or not. UDP often is used for real-time streaming of video where there is no time to have feedback.
Another type of non-responsive flow used by servers to transmit data to any client that is listening is multicast. Multicast is a compute network equivalent of broadcasting. Like a television broadcast, there may be a million clients receiving the transmitted data but the server has no way of knowing who is receiving. It is well know that responsive flows, such as TCP, which back off in the presence of congestion, fare poorly when contending for bandwidth with non-responsive flows, such as UDP and multicast.
Because non-responsive flows like UDP have no feedback feature, the server transmitting data to the client has no way of knowing whether the client is receiving all of the data. Some clients may be receiving all of the data, but many clients will be routinely losing a percentage of the data sent for various reasons causing a gap in the downloaded file. Thus, each client generally will have different loss characteristics or loss patterns. The loss patterns may change depending on what is occurring on each client. For example, gaps may be cause in one client by a problem with the network connection, and in another client by the browser being used to surf the WWW.
If the server is multicasting, one solution to gaps is to continuously repeat the multicast. For instance, if a file takes six hours to download and a few packets are missing, the client can listen again around the time the packets are being multicast again. In reality, however, this solution does not work well because it becomes harder to obtain the final packets needed to complete the downloaded file. This is a probability problem known as the “Coupon Collector's Problem”, and in the above example the loss of even a few packets might require the client to listen to the multicast another several more times just to acquire a small number of missing packets. If the multicast was six hours long, this process could take several hours or days. This is a highly inefficient use of bandwidth.
Accordingly, a need exists for a system and a method for electronic data transfer that allows recovery from gaps in a bandwidth efficient manner. In addition, there is a need for an electronic data transfer system and method that is transparent to other applications such that contention for the available bandwidth is avoided.